package com.wcity.manage.dao.dal;

import com.wcity.manage.dao.dal.model.AbstractModel;
import com.wcity.manage.dao.dal.model.PageModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.dao.DataAccessException;

import java.io.Serializable;
import java.util.List;


public interface BaseMapper<T extends AbstractModel, PK extends Serializable> {
	
	/**
	 * 插入
	 * 
	 * @param model
	 * @return
	 */
	int insert(T model) throws DataAccessException;
	
	/**
	 * 删除(find by id)
	 *  
	 * @param id
	 */
	int delete(@Param("id") PK id);
	
	/**
	 * 更新
	 * 
	 * @param model
	 */
	int update(T model) throws DataAccessException;
	
	/**
	 * 查询总数
	 * 
	 * @return
	 */
	int count(T model);
	
	/**
	 * 主键查询
	 * 
	 * @param id
	 * @return
	 */
	T find(@Param("id") PK id);
	
	/**
	 * 列表查询
	 * 
	 * @param model
	 * @return
	 */
	List<T> findList(T model);
	
	/**
	 * 分页查询
	 * 
	 * @param pageModel
	 * @return
	 */
	List<T> findListPage(PageModel<T> pageModel);

	/**
	 * 分页查询
	 * @param pageModel
	 * @return
     */
	List<T> IFindListPage(PageModel<T> pageModel);

	/**
	 * 分页查询
	 * @param pageModel
	 * @return
     */
    List<T> getIPayList(PageModel<T> pageModel);
}
